package model.swing;

import java.util.ArrayList;

import javax.swing.AbstractListModel;

import model.events.TurnEvent;
import model.listeners.TurnListener;

/**
 * Cette classe est un modèle pour une JList de l'interface graphique. Ce modèle
 * enregistre l'ensemble des coups réalisés dans la partie.
 * 
 * @author Lucile Gramusset et Guillaume Poussel
 * 
 */
@SuppressWarnings("serial")
public class MoveListModel extends AbstractListModel implements TurnListener {

    /**
     * Liste des coups
     */
    private ArrayList<String> moves = new ArrayList<String>();

    /**
     * Construit ce modèle
     */
    public MoveListModel() {
        super();
    }

    /**
     * Lorsqu'un coup est joué, on l'ajoute à la liste et on rafraichit cette liste.
     */
    public void turnPlayed(TurnEvent event) {
        moves.add(0, event.toString());
        fireIntervalAdded(this, 0, 0);
    }

    /**
     * Retourne la valeur à un certain index
     * @param index Le numéro de la ligne représentant le coup
     * 
     * @return Une chaîne de caractère représentant le coup, <code>null</code> si l'index est invalide.
     */
    public Object getElementAt(int index) {
        if (index >= 0 && index < moves.size()) {
            return moves.get(index);
        } else {
            return null;
        }
    }

    @Override
    public int getSize() {
        return moves.size();
    }

}
